#!/bin/bash

# 脚本名称: install_nginx.sh
# 描述: 在CentOS系统上通过tar.gz包安装Nginx
# 使用方法: ./install_nginx.sh <nginx_version>

# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
    echo "请以root用户或使用sudo运行此脚本!"
    exit 1
fi

# 检查参数
if [ "$#" -ne 1 ]; then
    echo "用法: $0 <nginx_version>"
    echo "例: $0 1.21.4"
    exit 1
fi

# 设置Nginx版本
NGINX_VERSION=$1

# 设置安装路径
INSTALL_DIR=/usr/local/nginx

# 下载Nginx源代码包
NGINX_TAR=nginx-$NGINX_VERSION.tar.gz
NGINX_DOWNLOAD_URL=http://nginx.org/download/$NGINX_TAR

echo "下载 Nginx $NGINX_VERSION ..."
curl -O $NGINX_DOWNLOAD_URL

# 验证下载是否成功
if [ $? -ne 0 ]; then
    echo "下载 Nginx $NGINX_VERSION 失败!"
    exit 1
fi

# 安装必要的依赖
echo "安装依赖包 ..."
yum install -y gcc pcre-devel zlib-devel make

# 解压下载的tar.gz包
echo "解压 Nginx 源代码 ..."
tar -zxvf $NGINX_TAR

# 进入解压后的目录
cd nginx-$NGINX_VERSION

# 配置编译选项
echo "配置编译选项 ..."
./configure --prefix=$INSTALL_DIR

# 开始编译并安装
echo "编译 Nginx ..."
make
make install

# 清理工作
echo "清理临时文件 ..."
cd ..
rm -rf nginx-$NGINX_VERSION $NGINX_TAR

# 创建Nginx的系统启动脚本
cat << EOF > /etc/systemd/system/nginx.service
[Unit]
Description=Nginx
After=network.target

[Service]
Type=simple
PIDFile=$INSTALL_DIR/logs/nginx.pid
ExecStart=$INSTALL_DIR/sbin/nginx
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/bin/kill -s TERM \$MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

# 重新加载systemd配置
systemctl daemon-reload

# 设置Nginx开机自启
systemctl enable nginx

# 启动Nginx服务
echo "启动 Nginx ..."
systemctl start nginx

# 输出安装信息
echo "Nginx $NGINX_VERSION 安装完成!"
echo "您可以通过以下命令检查 Nginx 状态:"
echo "systemctl status nginx"
echo "Nginx 默认监听端口是80，您可以在浏览器中访问 http://localhost 来验证它是否正常工作。"